<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        "use strict"

        var obj = {
            a:12
        }
        
        function fn(n,b,c){
            console.log(n,b,c);
            console.log(this);
        }

        // call 
        // 1. 第一个参数：要改变的this指向对象
        // 2. 第二个及后面的参数：传值
        // fn.call(obj,666,777,888);

        // apply
        // 1. 第一个参数：要改变的this指向对象
        // 2. 第二个参数：数组形式的参数集合
        // fn.apply(obj,[111,222,333]);

        // bind
        // 1. fn.bind() 会返回一个函数体
        // var fn2 = fn.bind(obj);
        // // console.log(fn.bind(obj));
        // 2. 需要再次调用返回的函数
        // fn2("a","b","c");

        // 简写：
        fn.bind(obj)("1","2","3");
    </script>
</body>
</html>